Azure DevOps Extension Release Pipeline#6507
Conversation
…indows and Linux (as it used to be compatible for Linux only)" This reverts commit 89438ae.
There was a problem hiding this comment.
Pull request overview
This PR sets up a complete Azure DevOps Extension Release Pipeline for the setupAzd task, enabling automated building, testing, signing, and publishing to the Azure DevOps marketplace.
Changes:
- Added CI/CD pipeline configuration files for building, testing, signing, and publishing the Azure DevOps extension
- Enhanced test suite with environment variable configuration and increased timeouts for better macOS compatibility
- Created PowerShell scripts for packaging and testing the extension
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
ext/azuredevops/setupAzd/tests/_suite.ts |
Added environment variables to disable actual tool downloads during tests and increased timeouts for macOS |
ext/azuredevops/ci-test.ps1 |
New script to run tests for the setupAzd extension |
ext/azuredevops/ci-package.ps1 |
New script to build and package the Azure DevOps extension into a VSIX file |
eng/pipelines/templates/stages/azuredevops-build-and-test.yml |
Stage template defining build matrix for Windows, Linux, and macOS |
eng/pipelines/templates/stages/azuredevops-sign.yml |
Stage template for signing the VSIX extension package |
eng/pipelines/templates/stages/azuredevops-publish-manual.yml |
Stage template for manually publishing signed extensions to the marketplace |
eng/pipelines/templates/jobs/azuredevops-build.yml |
Job template implementing build, test, and package steps for each platform |
eng/pipelines/release-azuredevops.yml |
Main pipeline orchestrating the complete release workflow |
eng/pipelines/templates/stages/1es-redirect.yml |
Updated azure-sdk-build-tools reference to newer version |
.vscode/cspell-devops-ext.txt |
Added TOOLSDIRECTORY to the spell-check dictionary |
| @@ -0,0 +1,2 @@ | |||
| #!/usr/bin/env pwsh | |||
| npm --prefix $PSScriptRoot/setupAzd/ test | |||
There was a problem hiding this comment.
The script does not check the exit code of the npm test command. While the default PowerShell behavior will fail the pipeline task if npm exits with a non-zero code, it's a best practice to explicitly check $LASTEXITCODE for consistency with the ci-package.ps1 script pattern. Consider adding error handling similar to ci-package.ps1.
| npm --prefix $PSScriptRoot/setupAzd/ test | |
| npm --prefix $PSScriptRoot/setupAzd/ test | |
| if ($LASTEXITCODE -ne 0) { | |
| Write-Error "npm test failed with exit code $LASTEXITCODE." | |
| exit $LASTEXITCODE | |
| } |
| environment: package-publish | ||
| pool: | ||
| name: azsdk-pool | ||
| image: ubuntu-24.04 |
There was a problem hiding this comment.
The image version 'ubuntu-24.04' is hard-coded here, whereas the vscode-publish-manual.yml uses '$(LINUXVMIMAGE)' from the image template variables. For consistency and easier maintenance, consider using the variable reference pattern instead of hard-coding the image version.
| image: ubuntu-24.04 | |
| image: $(LINUXVMIMAGE) |
| - deployment: Publish_Release | ||
| environment: package-publish | ||
| pool: | ||
| name: azsdk-pool |
There was a problem hiding this comment.
The pool name 'azsdk-pool' is hard-coded here, while other pipeline files use '$(LINUXPOOL)' from the globals template. For consistency and easier maintenance across the pipeline, consider using the variable reference '$(LINUXPOOL)' instead.
| name: azsdk-pool | |
| name: $(LINUXPOOL) |
See the ill-fated #6487 which got stuck in some partial state and was unable to merge.